When a computer application provides data to a device for printing and/or display, an intermediate description of the page is often given to device driver software in a page description language. The intermediate description of the page includes descriptions of the graphic objects to be rendered. This contrasts with some arrangements where raster image data is generated directly by the application and transmitted for printing or display. Examples of page description languages include Canon's LIPS™ and HP's PCL™.
Equivalently, the application may provide a set of descriptions of graphic objects via function calls to a graphics device interface (GDI) layer, such as the Microsoft Windows™ GDI layer. The printer driver for the associated target printer is the software that receives the graphic object descriptions from the GDI layer. For each graphic object, the printer driver is responsible for generating a description of the graphic object in the page description language that is understood by the rendering system of the target printer.
In some systems the application or operating system may store the application's print data in a file in some common well-defined format. The common well-defined format is also called the spool file format. During printing, the printer driver receives the spool file, parses the contents of the file and generates a description of the parsed data into an equivalent format which is in the page description language that is understood by the rendering system of the target printer. Examples of spool file formats are Adobe's PDF™ and Microsoft's XPS™.
In order to print a spool file residing on a host PC on a target printer, the spool file contents must first be converted to an equivalent print job which is in the format of the page description language. A filter module typically residing in a printer driver is used to achieve this.
Until recently the functionality of the spool file format has closely matched the functionality of the printer's page description language. Recently, new spool file formats now contain graphics functionality which is far more complex than that supported by the legacy page description languages. In particular some PDL formats only support a small subset of the spool-file functionality.
In some systems, the printer driver tells the underlying graphics device interface layer which functionality it supports. The GDI layer then only provides objects which meet the capabilities of the printer driver, by rasterizing objects. In many cases the GDI layer's rasterization produces incorrect results when transparency is present.
In other systems, the page data is analysed and the printing system decides whether to render the page to an image on the PC, or whether to convert the page data to a PDL print job. In such systems the presence of even a single object which cannot be converted to the PDL format may force the entire page to be rendered to an image. Variations of such systems may render a band of the page which contains the object. Such systems suffer if the object covers the entire page, such as in a watermark or a border graphic, then the entire page must still be rendered.
Still in other systems, the object itself is converted to an image. Again, such systems become inefficient when the object covers the entire page, especially if such objects require compositing over previously processed objects. An example of compositing is alpha compositing. In a printing system which has a page description language which does not support alpha compositing, any semi-transparent objects requiring alpha compositing must be converted to opaque objects. In such systems, the presence of a single object requiring alpha compositing causes the entire page of objects to be rendered to an image. In other systems, the object's transparency characteristics are either simulated using raster operation techniques, which produce close but invariably incorrect results; or, the object's transparency characteristics are ignored simply producing incorrect results.